# Es la clase que controla las entidades asociadas a AIESEC. Pueden ser entidades educativas, empresas, etc.
# Los Account Managers se comunican con la misma a través de los contactos. 
class CuentasController < ApplicationController
  before_filter :ensure_login 
  
  before_filter :get_mod, :only => [:new,:edit, :delete]
  
# Recupera todas las cuentas para ser mostradas en pantalla.
  def index
	  
	 user_id = params[:user_id]
	 contacto_id = params[:contacto_id]
	  
	 if user_id.to_i != 0 then 
	  @cuentas = Cuenta.search_asignadas(params[:search],params[:page],params[:user_id]) 
	 elsif contacto_id.to_i != 0 then 
	 	@cuentas = Cuenta.search_contactos(params[:search],params[:page],params[:contacto_id])
	 else 
	 	@cuentas = Cuenta.search(params[:search],params[:page])
	 end	
    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @cuentas }
    end
  end  
 
 # Crea el título utilizando el nombre del Account Manager. 
  def for_manager
  	@titulo = "de " + AccountManager.find(params[:user_id]).nombre
  	@cuentas = Cuenta.find_all_by_manager_id(params[:user_id])
  	respond_to do |format|
  		format.html { render :action => "index" }
  	end
  end

  # Recupera la cuenta que va a ser mostrada en pantalla.
  def show
    @cuenta = Cuenta.find(params[:id])

    respond_to do |format|
    	format.js
      format.html # show.html.erb
      format.xml  { render :xml => @cuenta }
    end
  end

# Recupera todas las cuentas para ser mostradas en pantalla. 
  def show_all
    @cuentas = Cuenta.find(:all)

    respond_to do |format|
      format.html # show.html.erb
    end
  end

# Prepara la nueva cuenta para su posterior creación efectiva.
  def new

     	@cuenta = Cuenta.new
     	respond_to do |format|
      	format.html # new.html.erb
     	  format.xml  { render :xml => @cuenta }
    	end
  end

   # Recupera la cuenta que va a ser editada.
  def edit
  	@cuenta = Cuenta.find(params[:id])
  end

# Crea la cuenta.
  def create
    @cuenta = Cuenta.new(params[:cuenta])
		respond_to do |format|
      if @cuenta.save
    		@usuario_cuenta = UsuarioCuenta.new
				@usuario_cuenta.cuenta_id = @cuenta.id
				@usuario_cuenta.user_id = current_user.id
				@usuario_cuenta.save 
    
        format.html { redirect_to(cuentas_path) }
        format.xml  { render :xml => @cuenta, :status => :created, :location => @cuenta }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @cuenta.errors, :status => :unprocessable_entity }
      end
    end
  end

  # Actualiza la cuenta.
  def update
  
  
    @cuenta = Cuenta.find(params[:id])
    respond_to do |format|
      if @cuenta.update_attributes(params[:cuenta])
        format.html { redirect_to(cuentas_path) }
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @cuenta.errors, :status => :unprocessable_entity }
      end
    end
  end

# Borrar efectivamente la cuenta.
  def destroy
    @cuenta = Cuenta.find(params[:id])
   
    @cuenta.destroy

    respond_to do |format|
      format.html { redirect_to(cuentas_path) }
      format.xml  { head :ok }
    end
  end
  
	
end
